package DataStructure_ZL.队列模拟.用栈模拟队列;

import java.util.Stack;

/*
请你仅使用两个队列实现一个后入先出（LIFO）的栈，
并支持普通栈的全部四种操作（push、top、pop 和 empty）。
u1存元素u2取元素
 */
public class StackQueue {
    private Stack<Integer> u1;
    private Stack<Integer> u2;

    //构造器
    public StackQueue() {
        u1 = new Stack<>();
        u2 = new Stack<>();
    }

    //添加元素
    public void push(int x) {
        u1.push(x);
    }

    //删除元素
    public int pop() {
        if (empty()) return -1;
        if (u2.empty()) {
            while (!u1.empty()) {
                u2.push(u1.pop());
            }
        }
        return u2.pop();
    }

    //获取顶部元素
    public int peek() {
        if (empty()) return -1;
        if (u2.empty()) {
            while (!u1.empty()) {
                u2.push(u1.pop());
            }
        }
        return u2.peek();
    }

    //判断是否为空
    public boolean empty() {
        return u1.empty() && u2.empty();
    }
}
